package entidades;

import java.util.ArrayList;

public class ShellSort {
	
	 public static final String CRITERIO_FECHA="F";
	 public static final String CRITERIO_CONTACTO="C";

	public ArrayList<ContactoAndroid> doSortAscending(ArrayList<ContactoAndroid> contactos){
		ArrayList<ContactoAndroid> toSort = contactos; 
	     
	        for( int gap = toSort.size() / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap / 2.2 ) ){
	        	
	            for( int i = gap; i < toSort.size(); i++ ){
	                ContactoAndroid tmp = toSort.get(i);
	                int j;
	                    for(j = i; j >= gap && tmp.getNombre().compareToIgnoreCase(toSort.get(j - gap).getNombre()) <  0 ; j -= gap ){
	                
	                      toSort.set(j, toSort.get(j - gap));
		              }
	                
	                toSort.set(j, tmp);
	            }
	        }
	        return toSort;
	     }
	
	public ArrayList<ContactoAndroid> doSortDescending(ArrayList<ContactoAndroid> contactos){
		ArrayList<ContactoAndroid> toSort = contactos; 
	     
	        for( int gap = toSort.size() / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap / 2.2 ) ){
	        	
	            for( int i = gap; i < toSort.size(); i++ ){
	                ContactoAndroid tmp = toSort.get(i);
	                int j;
	                    for(j = i; j >= gap && tmp.getNombre().compareToIgnoreCase(toSort.get(j - gap).getNombre()) >  0 ; j -= gap ){
	                
	                      toSort.set(j, toSort.get(j - gap));
		              }
	                
	                toSort.set(j, tmp);
	            }
	        }
	        return toSort;
	     }

	public ArrayList<Log> doSortDateDescending(ArrayList<Log> lista){
		ArrayList<Log> toSort = lista; 
	     
	        for( int gap = toSort.size() / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap / 2.2 ) ){
	        	
	            for( int i = gap; i < toSort.size(); i++ ){
	                Log tmp = toSort.get(i);
	                int j;
	                    for(j = i; j >= gap && tmp.getFecha().compareToIgnoreCase(toSort.get(j - gap).getFecha()) >  0 ; j -= gap ){
	                
	                      toSort.set(j, toSort.get(j - gap));
		              }
	                
	                toSort.set(j, tmp);
	            }
	        }
	        return toSort;
	     }
	
	public ArrayList<Log> doSortDateAscending(ArrayList<Log> lista){
		ArrayList<Log> toSort = lista; 
	     
	        for( int gap = toSort.size() / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap / 2.2 ) ){
	        	
	            for( int i = gap; i < toSort.size(); i++ ){
	                Log tmp = toSort.get(i);
	                int j;
	                    for(j = i; j >= gap && tmp.getFecha().compareToIgnoreCase(toSort.get(j - gap).getFecha()) <  0 ; j -= gap ){
	                
	                      toSort.set(j, toSort.get(j - gap));
		              }
	                
	                toSort.set(j, tmp);
	            }
	        }
	        return toSort;
	     }
	
	public ArrayList<Log> doSortUserDescending(ArrayList<Log> lista){
		ArrayList<Log> toSort = lista; 
	     
	        for( int gap = toSort.size() / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap / 2.2 ) ){
	        	
	            for( int i = gap; i < toSort.size(); i++ ){
	                Log tmp = toSort.get(i);
	                int j;
	                    for(j = i; j >= gap && tmp.getUsuario().compareToIgnoreCase(toSort.get(j - gap).getUsuario()) >  0 ; j -= gap ){
	                
	                      toSort.set(j, toSort.get(j - gap));
		              }
	                
	                toSort.set(j, tmp);
	            }
	        }
	        return toSort;
	     }
	
	public ArrayList<Log> doSortUserAscending(ArrayList<Log> lista){
		ArrayList<Log> toSort = lista; 
	     
	        for( int gap = toSort.size() / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap / 2.2 ) ){
	        	
	            for( int i = gap; i < toSort.size(); i++ ){
	                Log tmp = toSort.get(i);
	                int j;
	                    for(j = i; j >= gap && tmp.getUsuario().compareToIgnoreCase(toSort.get(j - gap).getUsuario()) <  0 ; j -= gap ){
	                
	                      toSort.set(j, toSort.get(j - gap));
		              }
	                
	                toSort.set(j, tmp);
	            }
	        }
	        return toSort;
	     }
	

	
}
